package com.chengke.novel.common.exception;


import com.chengke.novel.common.constant.ErrorCodeEnum;
import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * 自定义业务异常，用于处理用户请求时，业务错误时抛出
 * callSuper = true参数表示在生成equals()和hashCode()方法时，包括从父类继承的属性。
 * 如果不指定callSuper参数或将其设置为false，则只会包括当前类定义的属性。
 * 而当callSuper参数设置为true时，Lombok会自动合并当前类和父类的属性，生成完整的equals()和hashCode()方法。
 * @Author CK
 * @Date 2023/3/18
 */

@EqualsAndHashCode(callSuper = true)
@Data
public class BusinessException extends RuntimeException{
    private final ErrorCodeEnum errorCodeEnum;

    public BusinessException(ErrorCodeEnum errorCodeEnum) {
        // 不调用父类 Throwable的fillInStackTrace() 方法生成栈追踪信息，提高应用性能
        // 构造器之间的调用必须在第一行
        super(errorCodeEnum.getMessage(), null, false, false);
        this.errorCodeEnum = errorCodeEnum;
    }
}
